开发者选项中“不保存活动”按钮的含义

不保存活动 (Don't keep activities) 开启后处理

开发者选项中 " 不保存活动 " 按钮的含义

由于某些用户打开了这个按钮,会导致 app 的跳转逻辑和 fragment 加载出问题,而导致崩溃。在 app 设计时,处理这个问题刻不容缓。

解决方案

京东的解决方案

当发现用户打开了 " 不保留活动 " 按钮,弹出提示框,建议用户关闭。

fun Activity.showDotKeepActivitiesWarningDialog() {
    val alwaysFinish: Int =
        Settings.Global.getInt(contentResolver, Settings.Global.ALWAYS_FINISH_ACTIVITIES, 0)
    if (alwaysFinish == 1) {
        var dialog: Dialog? = null
        dialog = AlertDialog.Builder(this)
            .setMessage(
                "由于您已开启'不保留活动',导致部分功能无法正常使用.我们建议您点击左下方'设置'按钮,在'开发者选项'中关闭'不保留活动'功能."
            )
            .setNegativeButton(
                "取消"
            ) { dialog, _ -> dialog.dismiss() }
            .setPositiveButton(
                "设置"
            ) { _, _ ->
                val intent = Intent(
                    Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS
                )
                startActivity(intent)
            }.create()
        dialog.show()
    }
}